package com.fulihui.wgj.facade.dto;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.util.Date;

@Getter
@Setter
@ToString
public class WxPlatformDTO implements java.io.Serializable {

    private static final long serialVersionUID = -7385583959370403966L;

    private Integer id;

    /**
     * appid
     */
    private String appId;

    /**
     * {@link }
     */
    private String status;

    /**
     * 下一次拉取的openId
     */
    private String nextOpenid;

    /**
     * 公众号的访问token
     */
    private String authorizerAccessToken;

    /**
     * refresh_token用于刷新access_token
     */
    private String authorizerRefreshToken;

    /**
     * refresh_token的过期时间
     */
    private Date tokenRefreshTime;

    /**
     * 公众号授权给开发者的权限集列表，ID为1到15时分别代表：消息管理权限;用户管理权限;帐号服务限;网页服务权限;微信小店权限;微信多客服权限;群发与通知权限;微信卡券权限;微信扫一扫权限;微信连WIFI权限;素材管理权限;微信摇周边权限;微信门店权限;微信支付权限;自定义菜单权限;
     */
    private String funcInfo;

    /**
     * 授权方昵称
     */
    private String nickName;

    /**
     * 授权方头像
     */
    private String headImg;

    /**
     * 授权方公众号类型，0代表订阅号，1代表由历史老帐号升级后的订阅号，2代表服务号
     */
    private String serviceTypeInfo;

    /**
     * 授权方认证类型，-1代表未认证，0代表微信认证，1代表新浪微博认证，2代表腾讯微博认证，3代表已资质认证通过但还未通过名称认证，4代表已资质认证通过、还未通过名称认证，但通过了新浪微博认证，5代表已资质认证通过、还未通过名称认证，但通过了腾讯微博认证
     */
    private String verifyTypeInfo;

    /**
     * 授权方公众号的原始ID
     */
    private String userName;

    /**
     * 公众号的主体名称
     */
    private String principalName;

    /**
     * 授权方公众号所设置的微信号，可能为空
     */
    private String alias;

    /**
     * 用以了解以下功能的开通状况（0代表未开通，1代表已开通）：open_store:是否开通微信门店功能;open_scan:是否开通微信扫商品功能;open_pay:是否开通微信支付功能;open_card:是否开通微信卡券功能;open_shake:是否开通微信摇一摇功能;
     */
    private String businessInfo;

    /**
     * 二维码图片的URL，开发者最好自行也进行保存
     */
    private String qrcodeUrl;

    /**
     * 地理位置上报选项
     */
    private String locationReport;

    /**
     * 语音识别开关选项
     */
    private String voiceRecognize;

    /**
     * 多客服开关选项
     */
    private String customerService;

    /**
     * 小程序
     */
    private String miniProgramInfo;

    private Date gmtCreate;

    private Date gmtModified;

    /**
     * 当前Token是否过期
     *
     * @return
     */
    public boolean isExire() {
        /**
         * Token有效期 1小时50分
         */
        Long ticketTimeOut = (60 + 50) * 60 * 1000L;

        //判断Ticket
        if (this.tokenRefreshTime != null && (tokenRefreshTime.getTime() + ticketTimeOut) < System.currentTimeMillis()) {
            return true;
        }
        return false;
    }

    /**
     * 微信用户增减数据
     */
    private WxUserSummaryDTO wxUserSummaryDTO;

    /**
     * 微信用户总用户量
     */
    private WxUserCumulateDTO wxUserCumulateDTO;
}